﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace JudoTec
{
    public class Combate
    {
        private int id_Combate;
        private int id_Competicion;
        private int liga;
        private int ronda;
        private int participante_Primero;
        private int participante_Segundo;
        private string dni_1;
        private string dni_2;
        private int puntuacion_1;
        private int puntuacion_2;
        private bool activo;    

        
        //METODOS CONSTRUCTORES
        public Combate()
        {
            this.id_Competicion = -1;
            this.liga = 1;
            this.ronda = 1;
            this.dni_1 = "";
            this.dni_2 = "";
            this.puntuacion_1 = 0;
            this.puntuacion_2 = 0;
            this.activo = false;
        }

        public Combate(int idcombate, int idcompetcion, int liga,int participante_Primero, int participante_Segundo, string dni1, string dni2, int puntuacion1, int puntuacion2, bool activo)
        {
            this.id_Combate = idcombate;
            this.id_Competicion = idcompetcion;
            this.liga = liga;
            this.ronda = 1;
            this.participante_Primero = participante_Primero;
            this.participante_Segundo = participante_Segundo;
            this.dni_1 = dni1;
            this.dni_2 = dni2;
            this.puntuacion_1 = puntuacion1;
            this.puntuacion_2 = puntuacion2;
            this.activo = activo;
        }


        // Metodo que me inserta un participante en la BD
        public void InsertarCombate()
        {
            try
            {

                string consulta = "INSERT INTO combates (Id_Competicion, Liga, Ronda, Participante_Primero, Participante_Segundo, DNI_1, DNI_2, Puntuacion_1, " +
                    "Puntuacion_2, Activo) VALUES (@Id_Competicion, @liga, @ronda, @participante_Primero, @participante_Segundo, @DNI_1, @DNI_2, " +
                    "@Puntuacion_1, @Puntuacion_2, @Activo)";

                MySqlConnection conexion = cls.ConexionMySQL.IniciarConexion();
                MySqlCommand comando = new MySqlCommand(consulta, conexion);

                //Asigno los parametros
                comando.Parameters.AddWithValue("@Id_Competicion", this.id_Competicion);
                comando.Parameters.AddWithValue("@liga", this.liga);
                comando.Parameters.AddWithValue("@ronda", this.ronda);
                comando.Parameters.AddWithValue("@participante_Primero", this.participante_Primero);
                comando.Parameters.AddWithValue("@participante_Segundo", this.participante_Segundo);
                comando.Parameters.AddWithValue("@DNI_1", this.dni_1);
                comando.Parameters.AddWithValue("@DNI_2", this.dni_2);
                comando.Parameters.AddWithValue("@Puntuacion_1", this.puntuacion_1);
                comando.Parameters.AddWithValue("@Puntuacion_2", this.puntuacion_2);
                comando.Parameters.AddWithValue("@activo", this.activo);

                comando.ExecuteNonQuery();

                conexion.Close();

                // MessageBox.Show("Combate Añadido con Exito", "NoError");
            }
            catch (MySqlException)
            {
                MessageBox.Show("Ocurrio un error al Añadir el Combate", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

        }

        // Metodo que me modifica un combate en la BD
        public void ModificarCombate()
        {
            try{
              /*  string consulta = "UPDATE combates SET Id_Combate = @Id_Combate, Id_Competicion = @Id_Competicion, Liga = @liga, Ronda = @ronda, Participante_Primero = @participante_Primero, Participante_Segundo = @participante_Segundo " + 
                    ", DNI_1 = @DNI_1, DNI_2 = @DNI_2 , Puntuacion_1 = @Puntuacion_1, Puntuacion_2 =  @Puntuacion_2, Activo = @Activo WHERE Id_Combate = " + this.id_Combate; */
                string consulta = "UPDATE combates SET Id_Combate = @Id_Combate, Id_Competicion = @Id_Competicion, Liga = @liga, Ronda = @ronda, Participante_Primero = @participante_Primero, Participante_Segundo = @participante_Segundo " +
                    ", DNI_1 = @DNI_1, DNI_2 = @DNI_2 , Puntuacion_1 = @Puntuacion_1, Puntuacion_2 =  @Puntuacion_2, Activo = @Activo WHERE Id_Combate = @Id_Combate AND Ronda = @ronda";
                MySqlConnection conexion = cls.ConexionMySQL.IniciarConexion();
                MySqlCommand comando = new MySqlCommand(consulta, conexion);

                //Asigno los parametros 
                comando.Parameters.AddWithValue("@Id_Combate", this.id_Combate);
                comando.Parameters.AddWithValue("@Id_Competicion", this.id_Competicion);
                comando.Parameters.AddWithValue("@liga", this.liga);
                comando.Parameters.AddWithValue("@ronda", this.ronda);
                comando.Parameters.AddWithValue("@participante_Primero", this.participante_Primero);
                comando.Parameters.AddWithValue("@participante_Segundo", this.participante_Segundo);
                comando.Parameters.AddWithValue("@DNI_1", this.dni_1);
                comando.Parameters.AddWithValue("@DNI_2", this.dni_2);
                comando.Parameters.AddWithValue("@Puntuacion_1", this.puntuacion_1);
                comando.Parameters.AddWithValue("@Puntuacion_2", this.puntuacion_2);
                comando.Parameters.AddWithValue("@activo", this.activo);

                comando.ExecuteNonQuery();

                conexion.Close();
                //MessageBox.Show("Combate Modificado con Exito", "NoError");
            }
            catch (MySqlException)
            {
                MessageBox.Show("Ocurrio un error al Modificar el Combate", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }


        // Metodo que me elimina a un participante de la BD
        public void EliminarCombate()
        {
            try{
                string consulta = "DELETE FROM combates WHERE Id_Combate = " + this.id_Combate;

                MySqlConnection conexion = cls.ConexionMySQL.IniciarConexion();
                MySqlCommand comando = new MySqlCommand(consulta, conexion);

                comando.ExecuteNonQuery();
                conexion.Close();
                MessageBox.Show("Combate Eliminado con Exito", "Mensaje Informativo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (MySqlException)
            {
                MessageBox.Show("Ocurrio un error al Eliminar el combate", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }


        // Metodos get y set......
        public int Id_Combate
        {
            get { return id_Combate; }
            set { id_Combate = value; }
        }
        public int Id_Competicion
        {
            get { return id_Competicion; }
            set { id_Competicion = value; }
        }
        public int Participante_Primero
        {
            get { return participante_Primero; }
            set { participante_Primero = value; }
        }
        public int Participante_Segundo
        {
            get { return participante_Segundo; }
            set { participante_Segundo = value; }
        }
        public string Dni_1
        {
            get { return dni_1; }
            set { dni_1 = value; }
        }
        public string Dni_2
        {
            get { return dni_2; }
            set { dni_2 = value; }
        }
    
        public int Puntuacion_1
        {
            get { return puntuacion_1; }
            set { puntuacion_1 = value; }
        }
        public int Puntuacion_2
        {
            get { return puntuacion_2; }
            set { puntuacion_2 = value; }
        }

        public bool Activo
        {
            get { return activo; }
            set { activo = value; }
        }

        public int Liga
        {
            get { return liga; }
            set { liga = value; }
        }
        public int Ronda
        {
            get { return ronda; }
            set { ronda = value; }
        }


        //Sobrecargamos equals
        public override bool Equals(object obj)
        {
            //Si el parametro es nulo devuelvo false
            if (obj == null)
            {
                return false;
            }
            //Si al hacerle un cast da nulo devuelvo false
            Combate comb = obj as Combate;
            if (comb == null)
            {
                return false;
            }

            //Si todos los campos son igual devuelvo true
            if (this.id_Combate == comb.id_Combate)
            {
                return true;
            }
            return false;
        }

        
    }
}
